home *** CD-ROM | disk | FTP | other *** search
/ Mac Power 1997 October / MACPOWER-1997-10.ISO.7z / MACPOWER-1997-10.ISO / AMUG / PROGRAMMING / Mac F2C 1.3.5.sit / Mac F2C 1.3.5 / Mac F2C Libraries / libI77 Sources / uio.c < prev    next >
C/C++ Source or Header  |  1995-01-28  |  2KB  |  69 lines

  1. #include "f2c.h"
  2. #include "fio.h"
  3. uiolen f__reclen;
  4.  
  5. #ifdef KR_headers
  6. do_us(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
  7. #else
  8. do_us(ftnint *number, char *ptr, ftnlen len)
  9. #endif
  10. {
  11.     if(f__reading)
  12.     {
  13.         f__recpos += (int)(*number * len);
  14.         if(f__recpos>f__reclen)
  15.             err(f__elist->cierr, 110, "do_us");
  16.         if (fread(ptr,(int)len,(int)(*number),f__cf) != *number)
  17.             err(f__elist->ciend, EOF, "do_us");
  18.         return(0);
  19.     }
  20.     else
  21.     {
  22.         f__reclen += *number * len;
  23.         (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
  24.         return(0);
  25.     }
  26. }
  27. #ifdef KR_headers
  28. integer do_ud(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
  29. #else
  30. integer do_ud(ftnint *number, char *ptr, ftnlen len)
  31. #endif
  32. {
  33.     f__recpos += (int)(*number * len);
  34.     if(f__recpos > f__curunit->url && f__curunit->url!=1)
  35.         err(f__elist->cierr,110,"do_ud");
  36.     if(f__reading)
  37.     {
  38. #ifdef Pad_UDread
  39. #ifdef KR_headers
  40.     int i;
  41. #else
  42.     size_t i;
  43. #endif
  44.         if (!(i = fread(ptr,(int)len,(int)(*number),f__cf))
  45.          && !(f__recpos - *number*len))
  46.             err(f__elist->cierr,EOF,"do_ud")
  47.         if (i < *number)
  48.             memset(ptr + i*len, 0, (*number - i)*len);
  49.         return 0;
  50. #else
  51.         if(fread(ptr,(int)len,(int)(*number),f__cf) != *number)
  52.             err(f__elist->cierr,EOF,"do_ud")
  53.         else return(0);
  54. #endif
  55.     }
  56.     (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
  57.     return(0);
  58. }
  59. #ifdef KR_headers
  60. integer do_uio(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
  61. #else
  62. integer do_uio(ftnint *number, char *ptr, ftnlen len)
  63. #endif
  64. {
  65.     if(f__sequential)
  66.         return(do_us(number,ptr,len));
  67.     else    return(do_ud(number,ptr,len));
  68. }
  69.